package cn.lyjuan.pojoutils.genclass;

import cn.lyjuan.pojoutils.bean.ColumnBean;
import cn.lyjuan.pojoutils.bean.TableBean;

import java.util.List;

/**
 * Created by ly on 2014/11/20.
 */
public interface IGenClass
{
    /**
     * 生成POJO类字符串
     * @param tableBean
     * @param cols
     * @return
     */
    String gen(TableBean tableBean, List<ColumnBean> cols);

    /**
     * 生成导入类
     * @param cols
     * @return
     */
    String genImport(List<ColumnBean> cols);

    /**
     * 生成类的包名
     * @param tableBean
     * @return
     */
    String genPkg(TableBean tableBean);

    /**
     * 生成类名
     * @param tableBean
     * @return
     */
    String genClass(TableBean tableBean);

    /**
     * 生成属性
     * @param tableBean
     * @param cols
     * @return
     */
    String genMembers(TableBean tableBean, List<ColumnBean> cols);

    /**
     * 生成 Getter Setter 方法
     * @param cols
     * @return
     */
    String genGtterAndSetter(List<ColumnBean> cols);

    /**
     * 覆盖 toString 方法
     * @param tableBean
     * @param cols
     * @return
     */
    String genToString(TableBean tableBean, List<ColumnBean> cols);

    /**
     * 生成无参构造器
     * @param tableBean
     * @return
     */
    String getNoneParamsConstructor(TableBean tableBean);
}
